home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula 1
/
Nebula One.iso
/
Utilities
/
Workspace
/
Locus
/
Source
/
SwapView.m
< prev
next >
Wrap
Text File
|
1995-06-12
|
3KB
|
155 lines
/*
Copyright 1993 Jeremy Slade.
You are free to use all or any parts of the Locus project
however you wish, just give credit where credit is due.
The author (Jeremy Slade) shall not be held responsible
for any damages that result out of use or misuse of any
part of this project.
*/
/*
Project: Locus
File: SwapView
Description: See SwapView.h
Original Author: Jeremy Slade
Revision History:
Created
V.101 JGS Sat Mar 6 20:27:59 GMT-0700 1993
*/
#import "SwapView.h"
#import "Globals.h"
#import <objc/List.h>
#import <dpsclient/psops.h>
@implementation SwapView : View
// -------------------------------------------------------------------------
// Creating, Initializing
// -------------------------------------------------------------------------
+ initialize
{
[self setVersion:SwapView_VERSION];
return ( self );
}
- initFrame:(const NXRect *)frameRect
{
[super initFrame:frameRect];
replacementView = [[View allocFromZone:[self zone]] init];
return ( self );
}
- free
{
// Remove the currentPane if installed
if ( currentPane ) {
[self setDelegate:nil]; // So we won't get a new pane when we
[self swap]; // tell ourselves to swap panes
}
[replacementView free];
return ( [super free] );
}
// -------------------------------------------------------------------------
// SwapView behavior
// -------------------------------------------------------------------------
- setDelegate:anObject
{
delegate = anObject;
return ( self );
}
- delegate
{
return ( delegate );
}
- swap:sender
{
[self swap];
return ( self );
}
- swap
{
id installedView;
// Un-install currentPane if installed
if ( currentPane ) {
installedView = [subviews objectAt:0];
[installedView removeFromSuperview]; // Remove it from our view list
[currentPane setContentView:installedView]; // Put it back in its window
currentPane = nil;
}
// Ask the delegate for the new pane
if ( [delegate respondsTo:@selector(swapPaneFor:)] )
currentPane = [delegate swapPaneFor:self];
// Install the new pane as a subview our subivew:
if ( currentPane ) {
// Get the currentPane's contentView -- setting the replacementView as its
// new contentView will return the old contentView
installedView = [currentPane setContentView:replacementView];
// Install the new view as our subview
[self addSubview:installedView];
[self display];
}
return ( self );
}
- drawSelf:(const NXRect *)rects :(int)rectCount
/*
Fill ourselves with the window's background color/gray
*/
{
//if ( [self shouldDrawColor] )
// PSsetcolor ( ... );
//else
PSsetgray ( [window backgroundGray] );
NXRectFill ( &bounds );
return ( self );
}
@end